﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BussinessLogic;

namespace SchoolManagement.Forms.Controls
{
    public partial class ControlLugar : System.Web.UI.UserControl
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (_lugar == null) _lugar = new Lugares();
        }


        /// <summary>
        /// Identificador del Municipio Actual
        /// </summary>
        public int? IdMunicipio
        {
            get
            {
                if (DropDownListMunicipio.SelectedValue == null) return null;
                if (DropDownListMunicipio.SelectedValue.Length == 0) return null;
                return int.Parse(DropDownListMunicipio.SelectedValue);
            }
        }

        protected void DropDownListPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            ActualizarDepartamentos();
            ActualizarMunicipios();
        }

        private void ActualizarMunicipios()
        {
            // Actualiza los municipios
            ObjectDataSourceMunicipios.SelectParameters["idLugarPadre"].DefaultValue =
            DropDownListDepartamento.SelectedItem.Value;
            ObjectDataSourceMunicipios.Select();
            DropDownListMunicipio.DataBind();
        }

        private void ActualizarDepartamentos()
        {
            // Actualiza los departamentos
            ObjectDataSourceDepartamentos.SelectParameters["idLugarPadre"].DefaultValue =
             DropDownListPais.SelectedItem.Value;
            ObjectDataSourceDepartamentos.Select();
            DropDownListDepartamento.DataBind();
        }

        private void ActualizarPaisById(int id)
        {
            // Actualiza los departamentos
            ObjectDataSourcePais.SelectParameters.Add(new Parameter("Id", DbType.Int32, id.ToString()));
            ObjectDataSourcePais.SelectMethod = "GetLugarById";
            ObjectDataSourcePais.Select();
            DropDownListPais.DataBind();
        }

        private void ActualizarMunicipiosById(int id)
        {
            // Actualiza los departamentos
            ObjectDataSourceMunicipios.SelectParameters.Add(new Parameter("Id", DbType.Int32, id.ToString()));
            ObjectDataSourceMunicipios.SelectMethod = "GetLugarById";
            ObjectDataSourceMunicipios.Select();
            DropDownListMunicipio.DataBind();
        }

        private void ActualizarDepartamentosById(int id)
        {
            // Actualiza los departamentos
            ObjectDataSourceDepartamentos.SelectParameters.Add(new Parameter("Id", DbType.Int32, id.ToString()));
            ObjectDataSourceDepartamentos.SelectMethod = "GetLugarById";
            ObjectDataSourceDepartamentos.Select();
            DropDownListDepartamento.DataBind();
        }


        protected void DropDownListDepartamento_SelectedIndexChanged(object sender, EventArgs e)
        {
            ActualizarMunicipios();
        }

        protected void DropDownListMunicipio_SelectedIndexChanged(object sender, EventArgs e)
        {
            CalcularDescripcionLugar();
        }

        private Lugares _lugar = null;

        public Lugares Lugar
        {
            get { return _lugar; }
            set { _lugar = value; }
        }

        public string CalcularDescripcionLugar()
        {
            if (DropDownListMunicipio.SelectedItem == null) return "Seleccione...";
            Lugares lugar = new Lugares(int.Parse(DropDownListMunicipio.SelectedItem.Value), Lugar);
            //if (lugar.TipoLugar == TipoLugar.Municipio)
            //{
            //    if (_sessionKey != null && _sessionKey.Length > 0)
            //        Session[_sessionKey] = int.Parse(DropDownListMunicipio.SelectedItem.Value);
            //}
            return lugar.GetDescripcionLugar();
        }


        public string CalcularDescripcionLugar(string sessionKey)
        {
            if (DropDownListMunicipio.SelectedItem == null) return "Seleccione...";
            Lugares lugar = new Lugares(int.Parse(DropDownListMunicipio.SelectedItem.Value), Lugar);
            if (lugar.TipoLugar == TipoLugar.Municipio)
            {
                if (sessionKey != null && sessionKey.Length > 0)
                    Session[sessionKey] = int.Parse(DropDownListMunicipio.SelectedItem.Value);
            }
            return lugar.GetDescripcionLugar();
        }

        //private string _sessionKey;

        //public string SessionKey
        //{
        //    get { return _sessionKey; }
        //    set { _sessionKey = value; }
        //}


        public string CalcularDescripcionLugarById(int id)
        {
            Lugares lugar = new Lugares(id, _lugar);
            return lugar.GetDescripcionLugar();
        }

        protected void DropDownListMunicipio_DataBound(object sender, EventArgs e)
        {
            //CalcularDescripcionLugar();
        }



        internal void FillDescripcionLugar(int id)
        {
            Lugares lugar = new Lugares(id, Lugar);
            Lugares lugDpto = new Lugares(lugar.IdLugarPadre, lugar);
            DropDownListPais.ClearSelection();
            ListItem itemPais = DropDownListPais.Items.FindByValue(lugDpto.IdLugarPadre.ToString());
            if (itemPais == null) return;
            itemPais.Selected = true;
            ActualizarDepartamentos();
            DropDownListDepartamento.ClearSelection();
            ListItem itemDpto = DropDownListDepartamento.Items.FindByValue(lugDpto.Id.ToString());
            if (itemDpto == null) return;
            itemDpto.Selected = true;

            ActualizarMunicipios();
            DropDownListMunicipio.ClearSelection();
            ListItem itemMun = DropDownListMunicipio.Items.FindByValue(id.ToString());
            if (itemMun == null) return;
            itemMun.Selected = true;
        }
    }
}